package wrap

import (
	"excel-handle/util"
	"fmt"
	"github.com/xuri/excelize/v2"
	"log"
	"testing"
)

var HeadStyleDef = excelize.Style{
	Font: &excelize.Font{
		Bold: true,
	},
	// 实际上这里也隐含了一个指针，因为Fill本身就是结构体实例
	Fill: excelize.Fill{
		Type:    "pattern",
		Pattern: 1,
		// 浅绿
		Color: []string{"#D7E4BC"},
	},
	Alignment: &excelize.Alignment{
		Horizontal: "center",
	},
}

var SheetGlobalStyleDef = excelize.Style{Font: &excelize.Font{
	Family: "微软雅黑",
},
	Alignment: &excelize.Alignment{
		Horizontal: "center",
	}}

func TestExcel(t *testing.T) {
	file := excelize.NewFile()

	s1 := "Sheet1"

	file.NewSheet(s1)
	// 填充标题行
	file.SetCellValue(s1, "A1", "姓名")
	file.SetCellValue(s1, "B1", "年龄")
	file.SetCellValue(s1, "C1", "职位")

	// 填充数据行
	file.SetCellValue(s1, "A2", "张三")
	file.SetCellValue(s1, "B2", 30)
	file.SetCellValue(s1, "C2", "工程师")

	// 设置单元格样式（可选）

	// 创建样式
	// NewStyle函数的参数是一个指向excelize.Style结构体的指针
	var headStyleId, _ = file.NewStyle(&HeadStyleDef)

	sheetStyleId, _ := file.NewStyle(&SheetGlobalStyleDef)

	// 应用样式
	file.SetDefaultFont("微软雅黑")
	util.ApplyByStyleId(file, s1, sheetStyleId)
	// 首行
	// excel单元格索引以1开始
	file.SetRowStyle(s1, 1, 1, headStyleId)

	// 保存文件
	if err := file.SaveAs(DefaultOutputPath); err != nil {
		log.Fatal("保存文件时出错:", err)
	}

	fmt.Println("文件已成功创建并保存为 output.xlsx")

}

func TestExcelUtil(t *testing.T) {

	// 文件句柄。打开实例。
	// os.File 类型正是实现了 io.Reader 接口
	bufReader := util.ToBufReader(DefaultOutputPath)
	excel, _ := excelize.OpenReader(bufReader)
	//excel, _ := excelize.OpenFile(outPath)

	util.PrintSheet(excel, "Sheet1")
	//util.ApplyByStyleId(file, "Sheet1", excelize.Style{})
}
